package com.canyou.enums;

import lombok.Getter;

import java.util.Arrays;

/**
 * 资源存储方式(1.本地存储,2.七牛,3.阿里)
 *
 * @author fy
 * @date 20/05/13 15:13
 */
@Getter
public enum MediaStoreTypeEnum {

    /**
     * 本地存储
     */
    LOCAL(1, "本地"),

    /**
     * 七牛OSS
     */
    QI_NIU(2, "七牛"),

    /**
     * 阿里OSS
     */
    ALI(3, "阿里"),

    /**
     * minio OSS
     */
    MINIO(4, "minio"),

    ;

    /**
     * 根据 枚举类型值 获取对应类型枚举
     *
     * @param value
     * @return
     */
    public static MediaStoreTypeEnum valueOf(final Integer value) {
        return Arrays.stream(MediaStoreTypeEnum.values())
                .filter(enu -> enu.getValue().equals(value))
                .findFirst()
                .orElseThrow(() -> new RuntimeException("错误的资源存储方式"));
    }

    public static MediaStoreTypeEnum nameOf(final String name) {
        return Arrays.stream(MediaStoreTypeEnum.values())
                .filter(enu -> enu.getName().equals(name))
                .findFirst()
                .orElseThrow(() -> new RuntimeException("错误的资源存储方式"));
    }

    public static String getName(final Integer value) {
        return MediaStoreTypeEnum.valueOf(value).getName();
    }

    MediaStoreTypeEnum(Integer value, String name) {
        this.value = value;
        this.name = name;
    }

    private Integer value;
    private String name;

}
